# 默认值只被赋值一次，因此如果默认值是任何可变对象时会有所不同，比如列表、字典或大多数类的实例
def f(a, data=[]):
    data.append(a)
    return data


print(f(1))
# [1]
print(f(2))
# [1, 2]
print(f(3))
# [1, 2, 3]

print('-' * 12)


def f2(a, data=None):
    if data is None:
        data = []
    data.append(a)
    return data


print(f2(1))
# [1]
print(f2(2))
# [2]
print(f2(3))
# [3]
